//插件信息提示
var irm={
    //弹出一个定时自动关闭的提示框
    /*
    params

    msg：
    类型：字符串
    默认值：无
    描述：提示消息

    duration：
    类型：数字
    默认值：2000
    描述：（可选项）持续时长，单位：毫秒

    location：
    类型：字符串
    默认值：bottom
    描述：（可选项）弹出位置，顶部、中间或底部
    取值范围:top 顶部， middle 中间，bottom 底部

    background：
    类型：字符串
    默认值：linear-gradient(#000, #444)
    描述：背景色

    color：
    类型：字符串
    默认值：#fff
    描述：前景色
    */
    toast:function(param){
        if(typeof(param)!='object') param={};
        var zindex=param.zindex || 10;//层
        var duration=param.duration || 5000;//默认时长
        var locat=param.location || 'middle';//位置
        var background=param.background || 'linear-gradient(#000, #444)';//背景色
        var color=param.color || '#fff';//字体颜色
        var msg=param.msg || '';//提示信息
        var lists=param.lists || '';//信息列表
        var w=window.innerWidth || document.body.clientWidth;
        var h=window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;

        var div = document.createElement("div");
        div.style.position = "fixed";
        div.style.left ='0px';
        div.style.width = w + "px";
        div.style.zIndex = zindex;
        switch(locat)
        {
            case 'top'://顶部
                $(div).css('top','20px');
                break;
            case 'middle'://中间
                var top=h/2;
                $(div).css('top',top+'px');
                break;
            case 'bottom'://底部
                $(div).css('bottom','20px');
                break;
            default://顶部距离
                $(div).css('top',locat+'px');
                break;
        }

        var flex_row='display: -webkit-box;display: -webkit-flex;display: flex;';
        var flex_son='-webkit-box-flex: 1;-webkit-flex: 1;flex:1;';
        var str='';
        str+='<div style="'+flex_row+'" >';
        str+='<div style="'+flex_son+'"></div>';
        str+='<div style="background:'+background+';color:'+color+';padding:12px 8px;border-radius:8px;line-height:16px;font-size:14px;">';
        str+='<div style="'+flex_row+'">';
        if(lists)
        {
            if(lists.length>1)
            {
                for(var i=0;i<lists.length-1;i++)
                {
                    str+='<div style="padding:0px 8px;border-right:1px solid #ddd;">';
                    if(lists[i].href)
                    {
                        str+='<a href="'+lists[i].href+'">'+lists[i].title+'</a>';
                    }
                    else
                    {
                        str+=lists[i].title;
                    }
                    str+='</div>';
                }
            }
            var item=lists[lists.length-1];
            if(item.href)
            {
                msg='<a href="'+item.href+'" style="display:block;position:relative;padding-right:16px;color:'+color+';">'+item.title+'<i style="position:absolute;top:3px;right:0px;width: 0; height: 0; border-top:5px solid transparent; border-bottom:5px solid transparent; border-left:8px solid '+color+';"></i></a>';
            }
            else
            {
                msg=lists[i].title;
            }
        }
        str+='<div style="'+flex_son+' padding:0px 8px;">'+msg+'</div>';
        str+='</div>';
        str+='</div>';
        str+='<div style="'+flex_son+'"></div>';
        str+='</div>';
        $(div).html(str);
        $('body').append(div);
        $(div).fadeOut(duration,function(){
            $(div).remove();
            if(typeof(func)=='function')
            {
                func && func();
            }
        });
    },
    /*进度提示
    *
    *
    */
    progress:{
        /*进度提示

        params

        msg：
        类型：字符串
        默认值：无
        描述：提示消息

        duration：
        类型：数字
        默认值：2000
        描述：（可选项）持续时长，单位：毫秒

        location：
        类型：字符串
        默认值：bottom
        描述：（可选项）弹出位置，顶部、中间或底部
        取值范围:top 顶部， middle 中间，bottom 底部

        background：
        类型：字符串
        默认值：linear-gradient(#000, #444)
        描述：背景色

        color：
        类型：字符串
        默认值：#fff
        描述：前景色
        */
        open:function(params){
            if(typeof(params)!='object') params={};
            var msg=params.msg || '请稍等...';//提示信息
            var locat=params.location || 'bottom';//位置
            var w=window.innerWidth || document.body.clientWidth;
            var h=window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;
            var width=(msg.toString().length+1)*20;
            var left=(w-width)/2;
            var tmsgdiv=document.createElement("div");
            $(tmsgdiv).attr('id','irm_Progress');
            $(tmsgdiv).css('position','fixed');

            var t=h/2-70;
            $(tmsgdiv).css('top',t+'px');

            $(tmsgdiv).css('left',left+'px');
            $(tmsgdiv).css('width',width+'px');
            $(tmsgdiv).css('z-index','99999');
            var str='<div style="padding:50px 3px 3px 3px;background:url(http://i.xuezizhai.com/skin/image/isloading.gif) #000 center 5px no-repeat;border-radius:8px;">';
            str+='<div style="line-height:30px;text-align:center;font-size:12px;color:#fff;">'+msg+'</div>';
            str+='</div>';
            $(tmsgdiv).append(str);
            $('body').append(tmsgdiv);

            //创建遮罩背景
            var maskObj = document.createElement("div");
            maskObj.setAttribute('id','irm_Progress_bg');
            maskObj.style.position = "fixed";
            maskObj.style.top = "0";
            maskObj.style.left = "0";
            //maskObj.style.background = "#000";
            //maskObj.style.filter = "Alpha(opacity=70);";
            maskObj.style.opacity = "0.7";
            maskObj.style.width = w + "px";
            maskObj.style.height = h + "px";
            maskObj.style.zIndex = "10000";
            document.body.appendChild(maskObj);
        },
        /*关闭
        color：
        类型：字符串
        默认值：#fff
        描述：前景色
        */
        close:function(){
            $('#irm_Progress').remove();
            $('#irm_Progress_bg').remove();
        }
    },
    /*背景
    */
    backGround:{
        /*背景

        params

        zindex：
        类型：数字
        默认值：1000
        描述：层位置

        top：
        类型：数字
        默认值：0
        描述：距离顶部高度

        left：
        类型：数字
        默认值：0
        描述：距离左边高度

        right：
        类型：数字
        默认值：0
        描述：距离右边高度

        bottom：
        类型：数字
        默认值：0
        描述：距离底边高度

        background：
        类型：数字
        默认值：0
        描述：背景色
        */
        show:function(func,params){
            if(typeof(params)!='object') params={};
            var zindex=params.zindex || 10;//层
            var t=params.top || 0;//上边距
            var l=params.left || 0;//左边距
            var r=params.right || 0;//右边距
            var b=params.bottom || 0;//下边距
            var background=params.background || '#000';//背景色
            var w=window.innerWidth || document.body.clientWidth;
            var h=window.innerHeight || document.body.clientHeight || document.documentElement.clientHeight;
            w-=l;
            h-=t;
            w-=r;
            h-=b;
            //创建遮罩背景
            var maskObj = document.createElement("div");
            maskObj.style.position = "fixed";
            maskObj.style.top = t+'px';
            maskObj.style.left = l+'px';
            maskObj.style.right = r+'px';
            maskObj.style.bottom = b+'px';
            maskObj.style.background = background;
            maskObj.style.filter = "Alpha(opacity=70);";
            maskObj.style.opacity = "0.7";
            maskObj.style.width = w + "px";
            maskObj.style.height = h + "px";
            maskObj.style.zIndex = zindex;
            $(maskObj).click(function(){
                if(typeof(func)=='function') func &&　func();
                $(this).remove();
            })
            $(window).scroll(function(){
                var wd = $(window);
                var bheight=$('body').height();
                bheight-=t;
                bheight-=b;
                $(maskObj).height(bheight);
            });
            document.body.appendChild(maskObj);
            return maskObj;
        },
        hide:function(obj){
            $(obj).remove();
        }
    },
    /*打开frame框架

    params

    url：
    类型：字符串
    默认值：
    描述：网址
    */
    iframe:{
        open:function(params,func){
            var url=params.url || '';
            if(!url) return;
            var zindex=params.zindex || 10;//层
            var bgcolor=params.bgcolor || 'rgba(0,0,0,0.4)';//背景色
            var w=window.innerWidth || document.body.clientWidth;
            var h=window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;

            var width=params.width || w;
            var height=params.height || h;
            var left=params.left || (w-width)/2;
            var Top=params.top ||  (h-height)/2;

            //创建遮罩背景
            var div = document.createElement("div");
            $(div).attr('style','position:fixed;top:0;left:0;right:0;bottom:0;z-index:'+zindex+';backGround:'+bgcolor+';');

            var diviframe = document.createElement("div");
            $(diviframe).attr('style','position:fixed;top:'+Top+'px;left:'+left+'px;width:'+width+'px;height:'+height+'px;');
            $(div).append(diviframe);

            url+='&tmsg=message';
            var str='<iframe  src="'+url+'" frameborder="0"  width="100%" height="100%"></iframe>';
            $(diviframe).html(str);
            document.body.appendChild(div);

            //回调函数
            var back=function(e){
                var ret=e.data;
                if(typeof(ret)=='string') ret=JSON.parse(ret);
                if(ret.eventType=='close')
                {
                    window.removeEventListener("message",back, false);
                    div.remove();
                }
                func && func(ret);
            }
            //开启监听
            window.addEventListener("message",back, false);
            div.close=function(){
                window.removeEventListener("message",back, false);
                div.remove();
            }
            return div;
        },
        //向上级发送信息
        post:function(data){
            window.parent.postMessage(data, '*');
        },
        hide:function(obj){
            obj.close();
        }
    },
    /*打开div展示框

    params

    url：
    类型：字符串
    默认值：
    描述：网址
    */
    divBox:{
        open:function(params){
            var zindex=params.zindex || 10;//层
            var isbackground=params.isbackground || 1;//是否背景
            var w=window.innerWidth || document.body.clientWidth;
            var h=window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;

            var width=params.width || w;
            var height=params.height || h;
            var left=params.left || (w-width)/2;
            var Top=params.top ||  (h-height)/2;

            //创建遮罩背景
            var div = document.createElement("div");
            div.style.position = "fixed";
            div.style.top = '0px';
            div.style.left = '0px';
            div.style.width = w + "px";
            div.style.height = h + "px";
            div.style.zIndex = zindex;

            var diviframe = document.createElement("div");
            diviframe.style.position = "fixed";
            diviframe.style.top =Top+'px';
            diviframe.style.left =left+'px';
            diviframe.style.width = width + "px";
            diviframe.style.height = height + "px";
            $(diviframe).css('overflow','auto');
            $(div).append(diviframe);
            $(diviframe).html(params.body);
            document.body.appendChild(div);

            if(isbackground==1)
            {
                var backGround=irm.backGround.show(function(){
                    $(div).remove();
                },{zindex:zindex-1});
            }
            div.hide=function(){
                if(isbackground==1) irm.backGround.hide(backGround);
            }
            return div;
        },
        hide:function(obj){
            obj.hide();
            $(obj).remove();
        }
    },
    /*
    localStorage存储

    */
    storage:{
        /*
        设置localStorage数据

        key(类型：String)：键名

        value(类型：任意类型)：值

        */
        set:function(key,val,cachetime){
            if(!key) return false;
            var item={type:typeof(val),data:val};
            if(cachetime)
            {
                var myDate=new Date();
                item.cachetime=myDate.getTime()/1000+parseInt(cachetime);
            }
            localStorage.setItem(key,JSON.stringify(item));
        },
        /*
        获取localStorage数据 必须与.setStorage()配套使用

        key(类型：String)：键名

        */
        get:function(key){
            if(!key) return false;
            var str=localStorage.getItem(key);
            if(str==null) return false;
            var item=JSON.parse(str);
            if(item.cachetime)
            {
                var myDate=new Date();
                if(myDate.getTime()/1000>item.cachetime)
                {
                    this.remove(key);
                    return false;
                }
                delete(item.cachetime);
            }
            return item.data;
        },
        /*
        删除localStorage数据

        key(类型：String)：键名

        */
        remove:function(key){
            if(!key) return false;
            localStorage.removeItem(key);
        }
    },
    /*
    COOKIE控制
    */
    cookie:{
        /*
        设置COOKIE数据

        key(类型：String)：键名

        value(类型：String)：值

        */
        set:function(key,val){
            var Days = 30;
            var exp = new Date();
            exp.setTime(exp.getTime() + Days*24*60*60*1000);
            document.cookie = key + "="+ escape (val) + ";expires=" + exp.toGMTString();
        },
        /*
        获取COOKIE数据

        key(类型：String)：键名

        */
        get:function(key){
            if (document.cookie.length>0)
            {
                var c_start=document.cookie.indexOf(key + "=");
                if (c_start!=-1)
                {
                    c_start=c_start + key.length+1;
                    c_end=document.cookie.indexOf(";",c_start);
                    if (c_end==-1) c_end=document.cookie.length
                    return unescape(document.cookie.substring(c_start,c_end));
                }
            }
            return "";
        },
        /*
        删除COOKIE数据

        key(类型：String)：键名

        */
        remove:function(key){
            var exp = new Date();
            exp.setTime(exp.getTime() - 1);
            var cval=this.get(key);
            if(cval!=null)document.cookie= key + "="+cval+";expires="+exp.toGMTString();
        }
    },
    /*
    检测数组中是否包含 值

    val(类型：String)：数值
    arr(类型：Array)：数组

    如果存在返回键值 不存在返回 -1

    */
    inArray:function(val,arr){
        if(Object.prototype.toString.call(arr)!='[object Array]') return false;
        for(var i=0;i<arr.length;i++)
        {
            if(arr[i]==val) return i;
        }
        return -1;
    },
    /**
     *  异步传输
     *
     * @param   string   url 网址
     * @param   string   callback 回调函数
     * @param   string   data 参数
     * @return  function
     */
    requestRemote:function(url,callback,data){
        url+="&callback="+callback;
        if(typeof(data)!='object')
        {
            data={};
            type="GET";
        }
        else
        {
            type="POST";
        }
        $.ajax({
            url: url,
            data: data,
            dataType: "jsonp",
            jsonp: callback,
            success: function (data){
                console.log(data);
            },
            type:type
        })
    },
    /**
     *  请求数据
     *
     * @param   string   url 网址
     * @param   string   func 回调函数
     * @param   string   type 返回数据类型
     * @param   string   data 参数
     * @return  function
     */
    get:function(url,func,type,data){
        var self=this;
        var host=location.host;
        //来源其他域名
        if(url.indexOf('//'+host)>-1)
        {
            if(typeof(data)=='object')
            {
                $.post(url,data,func,type);
            }
            else
            {
                $.get(url,func,type);
            }
        }
        else
        {
            if(type=='json' && typeof(data)!='object')
            {
                var backfunc='ajax'+parseInt(Math.random()*999999999);
                this[backfunc]=function(status,ret){
                    func && func({status:status,data:ret});
                    delete(this[backfunc]);
                }
                self.requestRemote(url,'irm.'+backfunc);
            }
            else
            {
                self.toast({msg:'不支持异域请求'});
            }
        }
    },
    /**
     *  上传图片
     *
     * @param   string   url 上传地址
     * @param   string   name 文件名
     * @param   function   func 回调函数
     * @return  null
     */
    upload:function(url,name,func){
        var backfunc='ajax'+parseInt(Math.random()*999999999);
        this[backfunc]=function(status,ret){
            func && func({status:status,data:ret});
            $('#litpicadddiv').remove();
            delete(this[backfunc]);
        }
        url+='&name='+name+'&tmsg=parent&callback=irm.'+backfunc;
        var form=function(obj){
            $('#litpicadddiv').remove();
            var str='<div id="litpicadddiv" style="display:none;">';
            str+='<iframe id="litpicaddiframe" name="litpicaddiframe"></iframe>';
            str+='<form name="litpicaddiform" id="litpicaddiform" target="litpicaddiframe" action="'+url+'" enctype="multipart/form-data" method="post">';
            str+='</form>';
            str+='</div>';
            $('body').append(str);
            $('#litpicaddiform').append(obj);
            $('#litpicaddiform').submit();
        }
        var input=document.createElement("input");  // 以 DOM 创建新元素
        input.type='file';
        input.name=name;
        input.id=name;
        $(input).change(function(ret){
            form(input);
        });
        $(input).click();
    },
    /**
     *  上传图片
     *
     * @param   string   p 参数 url 上传地址 multiple 是否多文件上传
     * @param   function   func 回调函数
     * @return  null
     */
    uploads:function(p,func){
        var name='upfile';
        var url=p.url+'&name='+name+'&tmsg=msg';
        var input=document.createElement("input");  // 以 DOM 创建新元素
        input.type='file';
        if(p.multiple) input.multiple='multiple';
        $(input).change(function(ret){
            var lists =input.files; //获取当前选择的文件对象
            func && func({eventType:'init',data:lists});
            var j=0;
            function sendAjax(){
                if(j>=lists.length)   //采用递归的方式循环发送ajax请求
                {
                    func && func({eventType:'finish'});
                    return;
                }
                var formData = new FormData();
                formData.append(name, lists[j]);  //将该file对象添加到formData对象中
                $.ajax({
                    url:url,
                    type:'POST',
                    dataType:'json',
                    cache: false,
                    data:{},//需要什么参数，自己配置
                    data: formData,//文件以formData形式传入
                    processData : false,
                    //必须false才会自动加上正确的Content-Type
                    contentType : false ,
                    /*   beforeSend:beforeSend,//发送请求
                    complete:complete,//请求完成*/
                    xhr:function(){//监听用于上传显示进度
                        var xhr = $.ajaxSettings.xhr();
                        if(xhr.upload)
                        {
                            xhr.upload.addEventListener("progress" , function(evt){
                                console.log(evt)
                            }, false);
                            return xhr;
                        }
                    },
                    success:function(ret){
                        console.log(ret)
                        if(ret.status==3)
                        {
                            j++;
                            sendAjax();
                            ret.eventType='success';
                        }
                        else
                        {
                            ret.eventType='fail';
                        }
                        func && func(ret);
                    },
                    error:function(xhr){
                        func && func({eventType:'error',data:xhr});
                    }
                });
            }
            sendAjax();
        });
        $(input).click();
    },
    /**
     *  时间格式化
     *
     * @param   string   format 时间格式 y 年 m 月 d日 h 小时 i 分  s 秒 D 星期 M 微妙
     * @param   string   time 时间戳
     * @return  string
     */
    date:function(format,time){
        var newDate = new Date();
        newDate.setTime(time * 1000);
        var date ={
            "m+": newDate.getMonth() + 1,
            "d+": newDate.getDate(),
            "h+": newDate.getHours(),
            "i+": newDate.getMinutes(),
            "s+": newDate.getSeconds(),
            "D+": newDate.getDay(),
            "M+": newDate.getMilliseconds()
        };
        if(/(y+)/i.test(format))
        {
            format = format.replace(RegExp.$1, (newDate.getFullYear() + '').substr(4 - RegExp.$1.length));
        }
        for (var k in date)
        {
            if (new RegExp("(" + k + ")").test(format))
            {
                format = format.replace(RegExp.$1,RegExp.$1.length == 1 ? date[k] : ("00" + date[k]).substr((""+date[k]).length));
            }
        }
        return format;
    },
    /**
     *  秒换算成时间
     *
     * @param   string   format 时间格式 d日 h 小时 i 分  s 秒
     * @param   string   time 时间/秒
     * @return  string
     */
    tdate:function(t){
        if(typeof(t)!=='number') return '';
        var str='';
        var d = parseInt(t / (60 * 60 * 24));
        if (d > 0)
        {
            t -= d * (60 * 60 * 24);
            str+=d+'天';
        }
        var h = parseInt(t / (60 * 60))
        if (h > 0)
        {
            t -= h * (60 * 60);
            str+=h+'小时';
        }
        var m = parseInt(t / 60)
        if (m > 0)
        {
            t -= m * 60;
            str+=m+'分';
        }
        var s = Math.max(0, t);
        str+=s+'秒';
        return str;
    },
    /**
     *  倒计时
     * @param   int   endtime 到达时间
     * @return  string
     */
    countDown:function(endtime,func){
        if(typeof(endtime)!='number') return;
        if(typeof(func)!='function') return;
        var nowtime = Date.parse(new Date());
        nowtime = nowtime / 1000;
        if(nowtime>=endtime)
        {
            func && func({status:1,data:'结束'});
        }
        else
        {
            var str=this.tdate(endtime-nowtime);
            func && func({status:3,data:str});
            window.setTimeout(function(){
                irm.countDown(endtime,func);
            },1000);
        }
    },
    /**
     *  弹窗提示
     *
     * @return  null
     */
    alert:function(param){
        if(typeof(param)!='object') param={};
        var msg=param.msg;
        if(typeof(msg)=='object') msg=JSON.stringify(msg);
        alert(msg);
    },
    /**
     *  复选框
     *
     * @return  null
     */
    checkBox:{
        select:function(cl,bool){
            $('.'+cl).attr('checked',bool);
        }
    },
    /**
     *  判断是否手机
     *
     * @return  string
     */
    isMobile:function(){
        var sUserAgent = navigator.userAgent.toLowerCase();

        //微信浏览器
        if(sUserAgent.match(/micromessenger/i) == "micromessenger")
        {
            return {type:'weixin',ismobile:true};
        }

        //苹果手机
        if(sUserAgent.match(/iphone os/i) == "iphone os")
        {
            return {type:'iphone os',ismobile:true};
        }

        if(sUserAgent.match(/midp/i) == "midp")
        {
            return {type:'midp',ismobile:true};
        }

        if(sUserAgent.match(/rv:1.2.3.4/i) == "rv:1.2.3.4")
        {
            return {type:'rv:1.2.3.4',ismobile:true};
        }

        if(sUserAgent.match(/ucweb/i) == "ucweb")
        {
            return {type:'ucweb',ismobile:true};
        }

        if(sUserAgent.match(/android/i) == "android")
        {
            return {type:'android',ismobile:true};
        }

        if(sUserAgent.match(/windows ce/i) == "windows ce")
        {
            return {type:'windows ce',ismobile:true};
        }

        if(sUserAgent.match(/windows mobile/i) == "windows mobile")
        {
            return {type:'windows mobile',ismobile:true};
        }
        return false;
    },
    /**
     *  展示浏览器信息
     *
     * @return  string
     */
    browserInfo:function(){
        var u = navigator.userAgent.toLowerCase();
        var ret={};
        if(!!u.match(/\(i[^;]+;( u;)? cpu.+mac os x/))
        {
            ret.systemType='ios';
            //safari
            if(!!u.match(/iphone os/i))
            {
                ret.mobile=true;
            }
            else
            {
                ret.mobile=false;
            }
        }
        else if(u.indexOf('android') > -1 || u.indexOf('adr') > -1)
        {
            ret.systemType='android';
            ret.mobile=true;
            if(!!u.match(/oppo/i))
            {
                ret.Agent='oppo';
            }
            else if(!!u.match(/huawei|hdh60|honp/i))
            {
                ret.Agent='huawei';
            }
            else if(!!u.match(/redmi|mi |mix|hm/i))
            {
                ret.Agent='xiaomi';
            }
            else if(!!u.match(/vivo/i))
            {
                ret.Agent='vivo';
            }
            else if(!!u.match(/metal|mx5|m2 note/i))
            {
                ret.Agent='meizu';
            }
            else if(!!u.match(/zuk/i))
            {
                ret.Agent='lianxiang';
            }
        }
        else if(!!u.match(/windows ce/i))
        {
            ret.systemType='windows ce';
            ret.mobile=true;
        }
        else if(!!u.match(/windows mobile/i))
        {
            ret.systemType='windows mobile';
            ret.mobile=true;
        }
        else if(!!u.match(/windows/i))
        {
            ret.systemType='windows';
        }
        //微信浏览器
        if(!!u.match(/micromessenger/i))
        {
            ret.Browser='weixin';
            ret.mobile=true;
        }
        else if(!!u.match(/midp/i))
        {
            ret.Browser='midp';
            ret.mobile=true;
        }
        else if(!!u.match(/rv:1.2.3.4/i))
        {
            ret.Browser='rv:1.2.3.4';
            ret.mobile=true;
        }
        else if(!!u.match(/ucweb|ucbrowser/i))
        {
            ret.Browser='ucweb';
            ret.mobile=true;
        }
        else if(!!u.match(/qq/i))
        {
            ret.Browser='qq';
        }
        else if(!!u.match(/baiduboxapp|baidubrowser/i))
        {
            ret.Browser='baiduboxapp';
        }
        else if(!!u.match(/firefox/i))
        {
            ret.Browser='firefox';
        }
        //chrome
        else if(!!u.match(/chrome/i))
        {
            ret.Browser='chrome';
        }
        //safari
        else if(!!u.match(/safari/i))
        {
            ret.Browser='safari';
        }
        return ret;
    }
}